'''
    常用语法
'''

'''
1. u’这是一个字符串’
解释:将引号中字符串按照unicode(万国码)编码, 这也是python3默认的编码方式
2. r’这个字符串不会处理转义字符\n’
解释:将引号中字符串中转义字符忽略, 例如上边print(r’\n’)会原封不动输出’\n’而不是换行.
3. b’这是一个bytes类型’
解释:字节, 即8bit, 网络编程中数据传输都是按照bytes类型.
4. f’这个字符串中用大括号括起来的{1+1}会被执行’
'''
# 打开浏览器
from selenium import webdriver

driver = webdriver.Edge(r'C:\Users\caiyo\AppData\Local\Programs\Python\Python38\BroswerDriver\msedgedriver.exe')
# 调整浏览器比例
driver.execute_script("document.body.style.zoom='1'")
# 最大/最小化窗口
driver.maximize_window()
driver.minimize_window()
# get网页
driver.get('https://192.168.1.251/bsa,s/front/login.do')
# 隐式等待
driver.implicitly_wait(10)
# 强制等待
from time import sleep

sleep(1)
# 刷新网页
driver.refresh()
# 获取打开网址标题
driver.title()
# 打印当前的title
print(driver.title)
# 页面源码
driver.page_source()
# 获取页面 cookies
driver.get_cookies()
# 返回上一页
driver.back()
# 前进网页
driver.forward()
# 设置窗口大小
driver.set_window_size(1920, 1080)
# 截图
driver.get_screenshot_as_file(r'picture.png')
# 关闭当前标签页
driver.close()
# 关闭浏览器
driver.quit()
# 控制台打印输出
driver.execute_script("console.log('print(1)')")
# 最新的定位语法
from selenium.webdriver.common.by import By

driver.find_element(By.ID, '')
# 获取元素id
driver.find_element_by_id('')  # (被弃用的)获取id元素
driver.find_elements_by_id('')  # 从多个id元素中获取
# submit提交表单
driver.find_element_by_id('kw').send_keys(u'测试部落')
# submit()模拟enter键提交表单
driver.find_element_by_id('kw').submit()

# 获取当前窗口句柄
handle = driver.current_window_handle
print(handle)  # 打印首页句柄
# 获取所有句柄
all_handle = driver.window_handles
print(all_handle)  # 打印所有的句柄
# 切换句柄
driver.switch_to.window(all_handle[1])
print(driver.title)
# 关闭新窗口，切回主页
driver.close()
# 切换到首页句柄
driver.switch_to.window(handle)

# 防止自动化被浏览器识别（）
script = '''
Object.defineProperty(navigator, 'webdriver', {
    get: () => undefined
})
'''
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})
driver.get('www.baidu.com')  # 举例

# TODO:按下任意键继续（暂停）
import os

os.system('pause')

# TODO:打包文件之按任意键退出/继续
import msvcrt

print("请按任意键退出~")
ord(msvcrt.getch())

# TODO:任意键退出
import sys

sys.exit()
